Subject: Editor's draft DLSw spec (3 of 8)

From: "Alan K. Bartky, Manager of Technology" <[email-masked]>
Date: Mon, 11 Jul 94 13:38:29 PDT

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 1
X-Sun-Content-Length: 22

Here is part 3 of 8.

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: dlsw3.txt
X-Sun-Content-Lines: 478
X-Sun-Content-Length: 21089

RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

3.6. Capabilities Exchange Formats/Protocol:

   The Data Link Switching Capabilities Exchange is formatted as a single General
   Data Stream (GDS) Variable with multiple type "LT" structured subfields.

   The DLSw Capabilities Exchange Request has the following overall format:

       +----+----+-----------------+
       | LL | ID | Control Vectors |
       +----+----+-----------------+

       0-1         Length, in binary, of the DLSw Capabilities Exchange
                   Request GDS Variable.  The value of LL is the sum of
                   the length of all fields in the GDS Variable (i.e.
                   length of LL + length of ID + length of Control
                   Vectors).

       2-3         GDS Id: X'F000'

       4-n         Control Vectors consisting of type LT structured subfields
                   (i.e. the DLSw Capabilities Exchange Structured Subfields)

   Type LT structured subfields consist of a 1-byte length field (the "L"), a 1-
   byte type field (the "T") and
   n-bytes of data.  The length field includes itself as well as the structured
   subfield.  The structured
   subfield consists of the type field and data so the length is n + 2.  This
   imposes a length restriction of
   253 bytes on all data contained in a structured subfield.

3.6.1. Control Vector Id Range

   Control Vector identifiers (i.e. Type) in the range of X'80' through X'CF' are
   reserved for use by the Data Link Switching standard.

   Control Vector identifiers (i.e. Type) in the range of X'D0' through X'FD' are
   used for vendor-specific purposes.

3.6.2. Control Vector Order and Continuity

   Since their contents can greatly affect the parsing of the Capabilities
   Exchange GDS Variable, the
   Vendor Id and DLSw Version Control Vectors must occur first.  The remainder of
   the Control Vectors can occur in any order.

   Control Vectors that can be repeated (i.e. MAC Address List Control Vector and
   NetBIOS Name List Control Vector) must have all occurrences contiguous.  It is
   also advisable to have the Exclusivity Control Vector occur prior to either of

A.K. Bartky                                                  [Page 20]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

   the above two vectors so that the use of the individual MAC addresses or
   NetBIOS names will be known prior to parsing them.

3.6.3. Run-Time Capabilities Exchange

   Capabilities Exchange normally occurs at the startup of the data link switch.
   However, at run-time.  Run-time Capabilities Exchange can only consist of the
   following control vectors:
     1. Exclusivity CV,
     2. MAC Address List CV, and
     3. NetBIOS Name List CV.

   A run-time capabilities exchange is a replacement operation.  As such, all
   pertinent MAC addresses and NetBIOS names must be specified in the run-time
   exchange.

3.6.4. DLSw Capabilities Exchange Structured Subfields

3.6.4.1 Vendor Id (X'81') Control Vector

   The Vendor Id control vector identifies the manufacturer's IEEE assigned
   Organizationally Unique Identifier (OUI) of the Data Link Switch sending the
   DLSw Capabilities Exchange.  The OUI is sent in non-canonical (Token-Ring)
   format.  This control vector is required.

           Offset  Length  Value       Contents
           ------  ------  -----       --------
              0       1    X'05'       Length of the Vendor Id structured
                                       subfield
              1       1    X'81'       key = X'81' that identifies this as the
                                       Vendor Id structured subfield
             2-4      3                the 3-byte Organizationally Unique
                                       Identifier (OUI) for the vendor
                                       (non-canonical format)

3.6.4.2. DLSw Version (X'82') Control Vector

   The DLSw Version control vector identifies the particular version of the DLSw
   standard supported by the sending Data Link Switch.  This control vector is
   required.

           Offset  Length  Value       Contents
           ------  ------  -----       --------
              0       1    X'04'       Length of the Version String structured
                                       subfield
              1       1    X'82'       key = X'82' that identifies this as the
                                       DLSw Version structured subfield
             2-3      2                the hexadecimal value representing the

A.K. Bartky                                                  [Page 21]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

                                       the DLSw standard of
                                       the sending Data Link Switch.
                                         X'01', X'00'

3.6.4.3. Initial Pacing Window (X'83') Control Vector

   The Initial Pacing Window control vector specifies the initial value of the
   receive pacing window size for thesending Data Link Switch.  This control
   vector is required.

           Offset  Length  Value       Contents
           ------  ------  -----       --------
              0       1    X'04'       Length of the Initial Pacing Window
                                       structured subfield
              1       1    X'83'       key = X'83' that identifies this as the
                                       Initial Pacing Window structured subfield
             2-3      2                the pacing window size.

3.6.4.4. Version String (X'84') Control Vector

   The Version String control vector identifies the particular version number of
   the sending Data Link Switch.  The format of the actual version string is
   vendor-defined.  This control vector is optional.

           Offset  Length  Value       Contents
           ------  ------  -----       --------
              0       1    X'n'        Length of the Version String structured
                                       subfield
              1       1    X'84'       key = X'84' that identifies this as the
                                       Version String structured subfield
             2-n     n-2               the ASCII string that identifies the
                                       software version for the sending DLSw.

3.6.4.5. NetBIOS Support (X'85') Control Vector

   The NetBIOS Support control vector identifies support for the NetBIOS protocol
   by the sending Data Link Switch.  This control vector is optional.  If it is
   omitted in a DLSw Capabilities Exchange, then no NetBIOS support is assumed.

           Offset  Length  Value       Contents
           ------  ------  -----       --------
              0       1    X'03'       Length of the NetBIOS Support structured
                                       subfield
              1       1    X'85'       key = X'85' that identifies this as the
                                       NetBIOS Support structured subfield
              2       1                an indicator of the support for NetBIOS
                                       by the Data Link Switch.
                                       X'00'       NetBIOS is not supported by
                                                   the sender

A.K. Bartky                                                  [Page 22]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

                                       X'01'       NetBIOS is supported by the
                                                   sender

3.6.4.6. TCP Sessions (X'87') Control Vector

   The TCP Sessions control vector indicates the support of an alternate number of
   TCP sessions for the Data Link Switching traffic.  The base implementation of
   Data Link Switching supports two TCP sessions, one for each direction of data
   traffic.

   This control vector is optional.  If it is omitted in a DLSw Capabilities
   Exchange, then two TCP sessions are assumed.

           Offset  Length  Value       Contents
           ------  ------  -----       --------
              0       1    X'03'       Length of the TCP Sessions structured
                                       subfield
              1       1    X'87'       key = X'87' that identifies this as the
                                       TCP Sessions structured subfield
              2       1                an indicator of the support for an
                                       alternate number of TCP sessions by
                                       the sending Data Link Switch.
                                         X'01'     the number of TCP sessions
                                                   can be brought down to one
                                                   after Capabilities Exchange
                                                   is completed.
                                         X'02'     the number of TCP sessions
                                                   will remain at two for
                                                   the duration of the DLSw
                                                   connection.
                                         other     more TCP sessions can be
   6/27>                                           created if necessary.  The
   6/27>                                           value for 'other' does not
   6/27>                                           specify the actual number of
   6/27>                                           TCP sessions that are desired.

A.K. Bartky                                                  [Page 23]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

3.6.4.7. Exclusivity (X'88') Control Vector

   The Exclusivity control vector identifies how the MAC Address List and/or
   NetBIOS Name List control vector data is to be interpreted.  Specifically, this
   control vector identifies whether the MAC addresses and/or NetBIOS names are
   the only ones accessible via the sending Data Link Switch.

   If neither of the MAC Address List nor NetBIOS Name List control vectors is
   specified in the Capabilities Exchange, then this control vector is ignored.
   If either of the above control vectors is specified and the Exclusivity control
   vector is missing, then the MAC addresses and/or NetBIOS names are not assumed
   to be the only ones accessible via this switch.

           Offset  Length  Value       Contents
           ------  ------  -----       --------
              0       1    X'03'       Length of the Exclusivity structured
                                       subfield
              1       1    X'88'       key = X'88' that identifies this as the
                                       Exclusivity structured subfield
              2       1                an indicator of the relationship of the
                                       MAC addresses and/or NetBIOS names to
                                       the sending Data Link Switch
                                         X'00'     the MAC addresses and/or
                                                   NetBIOS names specified in
                                                   this Capabilities Exchange
                                                   can be accessed via this
                                                   switch but are not the
                                                   exclusive set (i.e. other
                                                   entities are accessible in
                                                   addition to the ones specified)
                                         X'01'     the MAC addresses and/or
                                                   NetBIOS names specified in
                                                   this Capabilities Exchange
                                                   are the only ones accessible
                                                   via this switch.

3.6.4.8. MAC Address List (X'89') Control Vector

   The MAC Address List control vector identifies one or more MAC addresses that
   are accessible through the      |
   sending Data Link Switch.  This control vector specifies a single MAC address
   value and MAC address    |
   mask value to identify the MAC address or range of MAC addresses.

   This control vector is optional and can be repeated if necessary.

A.K. Bartky                                                  [Page 24]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

   Note 1: If a particular MAC address, <mac-addr>, satisfies the following
   algorithm, then <mac-addr> is assumed to be accessible via the sending Data
   Link Switch:

   <mac-addr> & <mac-addr-mask> == <mac-addr-value>

   where:  <mac-addr-value> is the MAC Address
                            Value specified in
                            this control vector

           <mac-addr-mask>  is the MAC Address
                            Mask specified in
                            this control vector

   Note 2:  If an individual MAC Address is desired, then <mac-addr-value> should
   be the individual MAC address and <mac-addr-mask> should be X'FFFFFFFFFFFF'.

           Offset  Length  Value       Contents
           ------  ------  -----       --------
              0       1    X'0E'       Length of the MAC Address List
                                       structured subfield
              1       1    X'89'       key = X'89' that identifies this as the
                                       MAC Address List structured subfield
             2-7      6                the 6-byte MAC Address Value,
                                       <mac-addr-value> in the above formula
             8-13     6                the 6-byte MAC Address Mask,
                                       <mac-addr-mask> in the above formula

3.6.4.9. NetBIOS Name List (X'8A') Control Vector

   The NetBIOS Name List control vector identifies one or more NetBIOS names that
   are accessible through the      |
   sending Data Link Switch.  This control vector specifies a single NetBIOS name
   in ASCII.  However, the NetBIOS name can consist of "don't care" and "wildcard"
   characters to match on a number of NetBIOS names.  If an individual character
   position in the NetBIOS namein this control vector contains a '?', then the
   corresponding character position in real NetBIOS name is a "don't care".  If a
   NetBIOS name in this control vector ends in '*', then the remainder of real
   NetBIOS names is a "don't care".

   All blanks or nulls at the end of NetBIOS names in this control vector are
   ignored.

   This control vector is optional and can be repeated if necessary.

           Offset  Length  Value       Contents
           ------  ------  -----       --------
              0       1    X'n'        Length of the NetBIOS Name List
                                       structured subfield (maximum = X'12')

A.K. Bartky                                                  [Page 25]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

              1       1    X'8A'       key = X'8A' that identifies this as the
                                       NetBIOS Name List structured subfield
             2-n     n-2               the NetBIOS name with possible embedded
                                       '?' and terminating '*'.

3.6.5. Capabilities Exchange Responses

   There are two kinds of DLSw Capabilities Exchange Responses: positive and
   negative.  A positive response is returned to the sending Data Link Switch if
   there were no errors encountered in the DLSw Capabilities Exchange Request.  A
   negative response is returned if there is at least one error encountered.

   A positive DLSw Capabilities Exchange Response has the following overall
   format:

       +----+----+
       | LL | ID |
       +----+----+

       0-1         Length, in binary, of the DLSw Capabilities Exchange
                   Response GDS Variable.  The value of LL in this case
                   is X'0004'.

       2-3         GDS Id: X'F001'

   A negative DLSw Capabilities Exchange Response has the following overall
   format:

       +----+----+--------+--------+
       | LL | ID | Offset | Reason |
       +----+----+--------+--------+

       0-1         Length, in binary, of the DLSw Capabilities Exchange
                   Response GDS Variable.  The value of LL is the sum of
                   the length of all fields in the GDS Variable (i.e.
                   length of LL + length of ID + length of Offsets/Reasons).

       2-3         GDS Id: X'F002'

       4-5         Offset into the DLSw Capabilities Exchange Request of the
                   error.  Offset should always point to the start of the
                   GDS Variable or a specific control vector.

       6-7         Reason code that uniquely identifies the error.  Specific
                   values for the reason code are:
                     X'0001'       invalid GDS length for a DLSw Capabilities
                                   Exchange Request.  (The value of Offset
                                   is ignored.)
                     X'0002'       invalid GDS id for a DLSw Capabilities

A.K. Bartky                                                  [Page 26]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

                                   Exchange Request.  (The value of Offset
                                   is ignored.)
                     X'0003'       Vendor Id control vector is missing.  (The
                                   value of Offset is ignored.)
                     X'0004'       DLSw Version control vector is missing. (The
                                   value of Offset is ignored.)
                     X'0005'       Initial Pacing Window control vector is
                                   missing.  (The value of Offset is ignored.)
                     X'0006'       length of control vectors doesn't correlate
                                   to the length of the GDS variable
                     X'0007'       invalid control vector id
                     X'0008'       length of control vector invalid
                     X'0009'       invalid control vector data value
                     X'000A'       duplicate control vector (for non-repeating
                                   control vectors)
                     X'000B'       out-of-sequence control vector (for repeating
                                   control vector)

   Note:  Multiple Offset,Reason pairs can be returned with one pair for each
   error encountered.

A.K. Bartky                                                  [Page 27]RFC XXXX      DLSw: Switch-to-Switch Protocol                June 1994

4. Protocol Specification

   This section provides a description of the Switch-to-Switch Protocols.
   Included is a set of high-level protocol flows and a detail set of state
   transition tables.  The states and the protocols are described in terms that
   are intended to be generic to different platforms.  Emphasis of the technical
   details is to ensure operability of implementations from multiple vendors.
   Notes are inserted at points where certain vendor specific local actions were
   performed.

4.1. Protocol Flow Diagrams

   The switch-to-switch protocols are used to setup and take down circuits between
   a pair of Data Link Switches.  Once a circuit is established, the end stations
   on the local networks can employ LLC Type 1 (connectionless) protocols.  In
   addition, the end systems can establish an end-to-end connection for support of
   LLC Type 2 (connection oriented) protocols.

   The term, Data Link, is used in this document to refer to both a "logical data
   link" when supporting Type 1 LLC services, and a "data link connection" when
   supporting Type 2 LLC services.  In both cases, the Data Link in defined by the
   concatenation of the destination MAC address (DA), the source MAC address (SA),
   the destination link SAP (DSAP) and source link SAP (SSAP).

4.1.1. Connect Protocols

   The two basic bringup flows from a pure FSM perspective are shown below.  The
   first flow is a bringup involving XIDs and the second is one without XIDs.

A.K. Bartky                                                  [Page 28]